﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inventario_HardSoft.ADO;
using System.Windows.Forms;



namespace Inventario_HardSoft.Controlador
{ 
    class Ctrl_AsigProgramas
    {
        ConexionDataContext conexion;
        Contador conta;

        public Ctrl_AsigProgramas()
        {
            conexion = new ConexionDataContext();
            conta = new Contador();
        }


        internal List<String> listPC_Laptop()
        {
            var listeq = from e in conexion.EQUIPO
                         where (e.TIPOEQUIPO == "Laptop" || e.TIPOEQUIPO == "Desktop")
                         select e.TIPOEQUIPO;
            List<string> equipos = listeq.Distinct().ToList<string>();
            return equipos;              
        }

        internal List<EQUIPO> mostrarPC_Laptop(String tipoEquipo, int asignado)
        {
            List<EQUIPO> lstEq = conexion.EQUIPO.Where(x => x.TIPOEQUIPO == tipoEquipo && x.ELIMINADO == 0 && x.ASIGNADO == asignado).ToList<EQUIPO>();
            return lstEq;
        }

        internal void getList_Computadoras(DataGridView grib_Equipos, string idUsuario)
        {
            int i = 1;
            List<EQUIPO> listEquipos = conexion.EQUIPO.Where(x => x.IDUSUARIO == idUsuario && (x.TIPOEQUIPO == "Desktop" || x.TIPOEQUIPO == "Laptop")).ToList<EQUIPO>();
            
            foreach (EQUIPO e in listEquipos)
            {
                grib_Equipos.Rows.Add(new object[]{e.IDEQUIPO, i.ToString(),e.TIPOEQUIPO,e.MARCA,
                                                   e.MODELO, e.SERIE});
                i++;
            }            
        }

        internal void getList_EquipoxPrograma(ListBox lb, string p)
        {
            var consulta = from rel in conexion.RELACION_EQUI_PROG
                           join eq in conexion.EQUIPO on rel.IDEQUIPO equals eq.IDEQUIPO
                           join pr in conexion.PROGRAMA on rel.IDPROGRAMA equals pr.IDPROGRAMA
                           where rel.IDEQUIPO == p
                           select new 
                           {
                               rel.IDEQUIPO,
                               rel.IDPROGRAMA,
                               pr.NOMBREPROGRAMA
                           };

            foreach (var c in consulta)
            {
                lb.Items.Add(c.NOMBREPROGRAMA);
            }
        }

        internal DialogResult verificarEquipoxPrograma(string idequipo, DataGridView grid_ProgPosee)
        {
            DialogResult dr = DialogResult.Cancel;
            RELACION_EQUI_PROG eqxprog;

            try
            {
                foreach (DataGridViewRow row in grid_ProgPosee.Rows)
                {
                    eqxprog = new RELACION_EQUI_PROG(); 
                    eqxprog.IDEQUIPO = idequipo;
                    eqxprog.IDPROGRAMA = row.Cells["idPro"].Value.ToString();
                    conexion.RELACION_EQUI_PROG.InsertOnSubmit(eqxprog);
                }
                conexion.SubmitChanges();

                dr = DialogResult.OK;
            }
            catch (Exception)
            {
                dr = DialogResult.Cancel;
            }
            return dr;
        }
    }
}
